#ifndef PLANNER_H
#define PLANNER_H

/********** Library Includes **************************************************/

#include <opencv/cv.h>

/********** Classes ***********************************************************/

/**
 * An abstract class that defines the interface for planners.
 */
class Planner {
public:
	/**
	 * Initializes the planner using the matrix defining which image pixels are
	 * obstacles and which are open.  The matrix should be single channel and
	 * consist of 32-bit floating-point numbers (CV_32FC1) with 1 representing
	 * "open" and 0 representing "obstacle".
	 */
	virtual void init(const cv::Mat &open) = 0;
	
	/**
	 * Builds a plan to move the robot from the starting point to the goal
	 * point.
	 */
	virtual void plan(cv::Point start, cv::Point goal) = 0;
};

#endif